package com.hspedu.qqclient.view;

/**
 * @author 吴宇~
 * @motto 我亦无他，唯手熟尔。
 * @edition jdk1.8
 * @reflection 0-1 喧闹任其喧闹，自由我自为之，我自风情万种，与世无争。
 * @date 2023/03/20/11:08
 */

import com.hspedu.qqclient.service.FileClientService;
import com.hspedu.qqclient.service.MessageClientService;
import com.hspedu.qqclient.service.UserClientService;
import com.hspedu.qqclient.utils.Utility;


/**
 * 客户端的菜单界面，
 */
public class QQView {
    private boolean loop = true;//控制是否显示菜单
    private String key = "";//接收用户的键盘输入
    private UserClientService userClientService = new UserClientService();//这个对象是用于登录服务器.注册用户
    private MessageClientService messageClientService = new MessageClientService();//这个对象用于消息的发送，私聊，群聊
    private FileClientService fileClientService = new FileClientService();//该对象用于传输文件

    /**
     * @Description: TODO
     * @author: WY
     * @Return: 不停的调用主菜单方法
     */
    public void mainMenu() {
        while (loop) {
            System.out.println("====================欢迎登陆网络通信系统====================");
            System.out.println("\t\t\t\t\t 1 登录系统 ");
            System.out.println("\t\t\t\t\t 9 退除系统 ");
            System.out.print("请输入你的选择：");
            key = Utility.readString(1);
            //根据用户的输入，来处理不同的逻辑
            switch (key) {
                case "1":
                    System.out.print("请输入用户号：");
                    String userID = Utility.readString(50);
                    System.out.print("请输入密 码：");
                    String pwd = Utility.readString(50);
                    //需要到服务端验证用户是否合法！
                    //这里我们有很多代码，编写一个类，UserClientService(用户登录，用户注册)
                    /**
                     * 先把逻辑打通，假设验证成功
                     */
//                    System.out.println(userID+   " "+pwd);
                    if (userClientService.checkUser(userID, pwd)) {
                        System.out.println("\t\t\t\t███▇▆▅▄▃▂▁登录成功▁▂▃▄▅▆▇███");
                        System.out.println("====================欢迎" + userID + "用户登录成功====================");
                        //进入到二级菜单
                        while (loop) {
                            System.out.println("\n====================网络通讯系统二级菜单(用户" + userID + ")====================");
                            System.out.println("\t\t\t\t\t 1 显示在线用户列表");
                            System.out.println("\t\t\t\t\t 2 群发消息 ");
                            System.out.println("\t\t\t\t\t 3 私聊消息");
                            System.out.println("\t\t\t\t\t 4 发送文件");
                            System.out.println("\t\t\t\t\t 9 退出系统");
                            System.out.print("请输入你的选择：");
                            key = Utility.readString(1);
                            switch (key) {
                                case "1":
                                    //这里准备写一个方法获取在线用户列表
                                    userClientService.onlineFriendList();
                                    break;
                                case "2":
                                    //群发消息：
                                    System.out.print("请输入想对大家说的话：");
                                    String s = Utility.readString(100);
                                    //调用一个方法，将这个消息发送给服务端
                                    messageClientService.senderMessageToAll(s, userID);
                                    break;
                                case "3":
                                    System.out.print("请输入想聊天的在线用户Id号儿:");
                                    String getterId = Utility.readString(50);
                                    System.out.print("请输入想说的话:");
                                    String content = Utility.readString(100);
                                    //编写一个方法，将消息发送
                                    messageClientService.sendMessageToOne(content, userID, getterId);
                                    break;
                                case "4":
                                    System.out.print("请输入接收用户Id(在线)");
                                    String getterID = Utility.readString(10);
                                    System.out.print("请输入被发送文件的路径(格式：D:\\ideaa\\xx.jpg )：");
                                    String src = Utility.readString(100);
                                    System.out.print("请输入接收文件用户的路径(格式如上)：");
                                    String dest = Utility.readString(100);
                                    fileClientService.sendFileToOne(src,dest,userID,getterID);
                                    break;
                                case "9":
                                    //调用一个方法给服务器发送退出系统的message
                                    userClientService.logout();
                                    loop = false;
                                    break;
                                default:
                                    System.out.print("输入无效,请重新输入");
                                    break;
                            }
                        }
                    } else {//登录服务器失败
                        System.out.println("====================账号或密码错误，请重新输入====================");
                    }
                    break;
                case "9":
                    loop = false;
                    break;
            }
        }
    }
}
